# coding=utf-8
import pymysql
from dbutils.pooled_db import PooledDB
import cfg

'''
PooledDB() 参数含义

creator：使用链接数据库的模块
maxconnections：连接池允许的最大连接数，0和None表示没有限制
mincached：初始化时，连接池至少创建的空闲的连接，0表示不创建
maxcached：连接池空闲的最多连接数，0和None表示没有限制
maxshared：连接池中最多共享的连接数量，0和None表示全部共享，ps:其实并没有什么用，因为pymsql和MySQLDB等模块中的threadsafety都为1，所有值无论设置多少，_maxcahed永远为0，所以永远是所有链接共享
blocking：链接池中如果没有可用共享连接后，是否阻塞等待，True表示等待，False表示不等待然后报错
setsession：开始会话前执行的命令列表
ping：ping Mysql 服务端，检查服务是否可用
'''
global_pool = PooledDB(
    creator=pymysql,
    maxconnections=500,
    mincached=0,
    maxcached=100,
    maxshared=0,
    blocking=True,
    setsession=['SET AUTOCOMMIT = 1'],
    ping=5,
    host=cfg.host,
    port=cfg.port,
    user=cfg.user,
    password=cfg.password,
    database='denoise',
    charset='utf8mb4')

# 以后每次需要数据库连接用 connection() 函数获取连接即可
# conn = global_pool.connection()